home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / amok_lha / amok15.lha / Seafarers_Manual / Source / C3P5.mod < prev    next >
Text File  |  1993-08-15  |  1KB  |  48 lines

  1. MODULE C3P5;  (* Chapter 3  Problem 5 *)
  2.           (* Program SortAge changed to sort crew in descending sequence *)
  3.  
  4.    (* From the book "Modula-2  A Seafarer's Manual and Shipyard Guide" *)
  5.    (* Page 79   adapted "M2Amiga Modula-2"   04 Mar 1988 *)
  6.  
  7. FROM InOut IMPORT WriteLn,
  8.                   WriteString,
  9.                   WriteCard,
  10.                   ReadCard;
  11.                   
  12. VAR
  13.   i,                (* array index *)
  14.   HoldAge : CARDINAL;
  15.   sorted : BOOLEAN;
  16.   CrewAge : ARRAY [1..25] OF CARDINAL;
  17.   
  18. BEGIN
  19.   WriteLn;
  20.   WriteString ("Enter crew ages: ");
  21.   WriteLn;
  22.   
  23.   FOR i := 1 TO 25 BY 1 DO
  24.     ReadCard (CrewAge[i]);    (* get age from keyboard *)
  25.     WriteLn;
  26.   END;
  27.   
  28.   REPEAT            (* pass thru array until sorted *)
  29.     sorted := TRUE;        (* assume sorted *)
  30.     FOR i := 1 TO (25 - 1) BY 1 DO
  31.       (* compare each adjacent pair of elements *)
  32.       IF (CrewAge[i] < CrewAge[i+1]) THEN
  33.         HoldAge := CrewAge[i];    (* out of order, exchange *)
  34.         CrewAge[i] := CrewAge[i+1];
  35.         CrewAge[i+1] := HoldAge;
  36.         sorted := FALSE;
  37.       END;   (* IF *)
  38.     END;   (* FOR *)
  39.   UNTIL sorted;
  40.   
  41.   WriteString ("Sorted crew ages: ");
  42.   FOR i := 1 TO 25 BY 1 DO    (* display sorted ages *)
  43.     WriteCard (CrewAge[i],5);
  44.     WriteLn;
  45.   END;   (* FOR *)
  46.   
  47. END C3P5.
  48.